package neptune.manager.storage;

import neptune.manager.model.topology.Topology;


/**
 * Questa interfaccia rappresenta uno storage per mantenere le informazioni
 * riguardanti i template in modo persistente. Puo' essere implementata in
 * diversi modi, in dipendenza delle scelte progettuali effettuate.
 * 
 * @author Luigi Lorenzo Arpino [luigiarpino@yahoo.it]
 * 
 */
public interface TemplateStorage 
{
	/**
	 * Restituisce l'elenco di tutti i template
	 * 
	 * [0]= nome file file
	 * [1]= id file
	 * [2]= descrizione
	 * @return
	 * @throws StorageReadException
	 */
	public String[][] getAllTemplate() throws StorageReadException;
	
	
	/**
	 * Restituisce la descrizione XML del template indicato fileName
	 * 
	 * @param fileName
	 * @return
	 * @throws StorageReadException
	 */
	public String getXMLtemplate(String fileName)  throws StorageReadException;
	
	/**
	 * Salva un template
	 * 
	 * @param topology
	 * @throws StorageSaveException
	 */
	public void saveTemplate(Topology topology)  throws StorageSaveException;
	
	/**
	 * Rimuove un template
	 * 
	 * @param nomeFile
	 * @throws StorageSaveException
	 */
	public void deleteTemplate(String nomeFile) throws StorageSaveException;
}
